// pages/index/regulationsdetail/regulationsdetail.js
import {
    GetSchoolRulesDtl, // 招生简章详情
} from '../../../api/index'
// 导入wxParse模块
const WxParse = require('../../../wxParse/wxParse');

import Toast from '../../../miniprogram_npm/@vant/weapp/toast/toast';

Page({

    /**
     * 页面的初始数据
     */
    data: {
        model: null,
        content: '', //富文本
        isScroller: false,
        article: '',
    },

    /**
     * 生命周期函数--监听页面加载
     */
    onLoad(options) {
        this._GetSchoolRulesDtl({
            id: options.id
        }, true);
    },

    // 招生简章详情
    _GetSchoolRulesDtl: function (data, isLoading) {
        GetSchoolRulesDtl(data, isLoading).then(res => {
            console.log(res)
            let code = res.code;
            if (code == 200) {
                let article = res.data.content.replace(/(\<img|\<p)/gi, function ($0, $1) {
                    return {
                        "<img": '<img style="width:100%;height:auto;display:block;" ',
                        "<p": '<p style=" line-height:2em" ',
                        "<article": "<div",
                        "</article": "</div",
                        "<header": "<div",
                        "</header": "</div"
                    } [$1];
                });
                this.setData({
                    article: article
                })


                // 初始化富文本解析
                WxParse.wxParse('article', 'html', this.data.article, this, 5);

                // 在解析完成后，可以在回调函数中进行相关操作
                setTimeout(() => {
                    // 获取解析后的节点数据
                    const articleNodes = this.data.article.nodes;

                    if (articleNodes && Array.isArray(articleNodes)) {
                        const tableElement = this.findTableElement(articleNodes);
                        console.log(tableElement)
                        if (tableElement) {
                            // 获取页面宽度
                            const pageWidth = wx.getSystemInfoSync().windowWidth;
                            if (tableElement.attr.style) {
                                // 从style属性中提取表格的宽度信息
                                const width = this.getTableWidthFromStyle(tableElement.attr.style);
                                console.log(width)
                                // 判断是否需要横向滑动
                                if (width > pageWidth) {
                                    console.log('需要横向滑动');
                                    this.setData({
                                        isScroller: true
                                    })
                                } else {
                                    console.log('不需要横向滑动');
                                    this.setData({
                                        isScroller: false
                                    })
                                }
                            }

                        } else {
                            console.log('富文本内容中未找到表格元素');
                        }
                    } else {
                        console.log('解析后的节点数据为空或不是数组');
                    }
                }, 1000); // 在解析完成后延迟执行，确保解析完成

                this.setData({
                    model: res.data,
                    content: article,
                })
            } else {
                Toast(res.msg)
            }
        })
    },

    // 从style属性中提取表格的宽度信息
    getTableWidthFromStyle(style) {
        console.log(style)
        const styles = style.map(item => item.trim());
        const widthStyle = styles.find(item => item.startsWith('width:'));
        console.log(widthStyle)
        // 获取'banana'在数组中的位置
        let position = style.indexOf('width:');
        const widthValue = style[position + 1]; // 返回 'banana'
        widthValue.replace(widthValue, 'px')
        if (widthStyle) {
            // const widthValue = widthStyle.split(':')[1].trim();
            const width = parseInt(widthValue);
            return width;
        }

        return 0; // 默认宽度为0
    },


    // 递归函数，用于在多层数组中查找表格元素
    findTableElement(nodes) {
        let that = this;
        for (const node of nodes) {
            if (node.tag === 'table') {
                return node; // 找到表格元素，返回该节点
            } else if (node.nodes && Array.isArray(node.nodes)) {
                const result = that.findTableElement(node.nodes); // 递归查找子节点
                if (result) {
                    return result; // 如果找到表格元素，直接返回
                }
            }
        }
        return null; // 在当前节点及其子节点中未找到表格元素
    },

    /**
     * 生命周期函数--监听页面初次渲染完成
     */
    onReady() {

    },

    /**
     * 生命周期函数--监听页面显示
     */
    onShow() {

    },

    /**
     * 生命周期函数--监听页面隐藏
     */
    onHide() {

    },

    /**
     * 生命周期函数--监听页面卸载
     */
    onUnload() {

    },

    /**
     * 页面相关事件处理函数--监听用户下拉动作
     */
    onPullDownRefresh() {

    },

    /**
     * 页面上拉触底事件的处理函数
     */
    onReachBottom() {

    },

    onShareTimeline: function (){

    },

    /**
     * 用户点击右上角分享
     */
    onShareAppMessage() {

    }
})